perm filename RUNNER.SAI[VIS,HPM] blob
sn#146238 filedate 1975-02-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "RUNNER"
C00008 ENDMK
C⊗;
BEGIN "RUNNER"
REQUIRE "VIXNIC.SAI[VIS,HPM]" SOURCE_FILE;
REQUIRE "WIXNIC.SAI[VIS,HPM]" SOURCE_FILE;
REQUIRE "DDEXT.SAI[VIS,HPM]" SOURCE_FILE;
INTEGER HEIGHT,WIDTH,BITS,NPIC,FILTERWINDOW,INTERESTWINDOW,CORRELWINDOW;
HEIGHT←WIDTH←256; BITS←4; NPIC←8;
FILTERWINDOW←20;
INTERESTWINDOW←7;
CORRELWINDOW←20;
BEGIN
INTEGER I,NFEATS;
INTEGER ARRAY P1[0:1,0:PICDIM(HEIGHT,WIDTH,BITS)-1],
P2[0:1,0:PICDIM(HEIGHT%2,WIDTH%2,BITS+2)-1],
P4[0:NPIC-1,0:PICDIM(HEIGHT%4,WIDTH%4,BITS+4)-1];
INTEGER ARRAY FEATURE[0:NPIC-1,1:100,0:2];
comment third dimension 0 - value (interest or correlation)
1 - y position of the feature
2 - x position of the feature;
DEFINE VAL="0", X="1", Y="2";
FOR I←0 STEP 1 UNTIL NPIC-1 DO
BEGIN
BEGIN
INTEGER ARRAY T[0:PICDIM(HEIGHT,WIDTH,BITS)-1];
MAKPIX(HEIGHT,WIDTH,BITS,T[0]);
CAMPIX(0,1,1,1,8,T[0]);
CLEAN(T[0]);
PASSHI(T[0],FILTERWINDOW,P1[I MOD 2,0]);
HAFPIC(P1[I MOD 2,0],P2[I MOD 2,0]);
HAFPIC(P2[I MOD 2,0],P4[I,0]);
END;
IF I=0 THEN
BEGIN
comment this is the first picture in the sequence, so apply
the interest operator to find some features to track;
INTEGER IAV,I,J;
INTEGER ARRAY INTEREST[-2:(WIDTH-1)%INTERESTWINDOW-1,
0:(HEIGHT-1)%INTERESTWINDOW-1];
IAV←INTRST(P1[0,0],INTERESTWINDOW,INTEREST[0,0]);
NFEATS←0;
comment record the found features in the FEATURE array;
FOR I←0 STEP 1 UNTIL (HEIGHT-1)%INTERESTWINDOW-1 DO
FOR J←0 STEP 1 UNTIL (WIDTH-1)%INTERESTWINDOW-1 DO
IF INTEREST[I,J]≥IAV ∧ (INTEREST[I,J] LAND 1)=0 THEN
BEGIN
NFEATS←NFEATS+1;
FEATURE[0,NFEATS,VAL]←INTEREST[I,J];
FEATURE[0,NFEATS,Y]←(2*I+1)*INTERESTWINDOW%2;
FEATURE[0,NFEATS,X]←(2*J+1)*INTERESTWINDOW%2;
END;
END
ELSE
BEGIN
comment for second and subsequent pictures, find the features
in the previous picture in the current one;
INTEGER J;
FOR J←1 STEP 1 UNTIL NFEATS DO IF FEATURE[I-1,J,VAL]≠0 THEN
BEGIN
INTEGER IL1,JL1,IH1,JH1,IL2,JL2,IH2,JH2,T;
IL1←FEATURE[I-1,J,Y]-CORRELWINDOW%2;
JL1←FEATURE[I-1,J,X]-CORRELWINDOW%2;
IH1←IL1+CORRELWINDOW; JH1←JL1+CORRELWINDOW;
IL2←IL1-CORRELWINDOW; IH2←IH2+CORRELWINDOW;
JL2←JL1-CORRELWINDOW; JH2←JH2+CORRELWINDOW;
IL2←IL2%4; IH2←IH2%4; JL2←JL2%4; JH2←JH2%4;
T←BSTCOR(P4[I-1,0],JL1%4,IL1%4,JH1%4,IH1%4,
P4[I,0],JL2,IL2,JH2,IH2);
IL2←2*IL2-10; IH2←2*IH2+10; JL2←2*JL2-10; JH2←2*JH2+10;
T←BSTCOR(P2[(I-1) MOD 2,0],JL1%2,IL1%2,JH1%2,IH1%2,
P2[I MOD 2,0],JL2,IL2,JH2,IH2);
IL2←2*IL2-10; IH2←2*IH2+10; JL2←2*JL2-10; JH2←2*JH2+10;
T←BSTCOR(P1[(I-1) MOD 2,0],JL1,IL1,JH1,IH1,
P1[I MOD 2,0],JL2,IL2,JH2,IH2);